package com.mall.module.user.mapper;

import com.mall.module.user.domain.entity.UserAddress;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

@Mapper
public interface UserAddressMapper {

    /**
     * 通过地址ID查询用户地址
     *
     * @param addressId 地址ID
     * @return 用户地址
     */
    UserAddress selectById(@Param("addressId") Long addressId);

    /**
     * 通过用户ID查询用户地址列表
     *
     * @param userId 用户ID
     * @return 用户地址列表
     */
    List<UserAddress> selectByUserId(@Param("userId") Long userId);

    /**
     * 查询用户默认地址
     *
     * @param userId 用户ID
     * @return 用户默认地址
     */
    UserAddress selectDefaultByUserId(@Param("userId") Long userId);

    /**
     * 插入用户地址
     *
     * @param userAddress 用户地址
     * @return 影响行数
     */
    int insert(UserAddress userAddress);

    /**
     * 更新用户地址
     *
     * @param userAddress 用户地址
     * @return 影响行数
     */
    int update(UserAddress userAddress);

    /**
     * 设置用户默认地址
     *
     * @param userId 用户ID
     * @param addressId 地址ID
     * @return 影响行数
     */
    int setDefault(@Param("userId") Long userId, @Param("addressId") Long addressId);

    /**
     * 取消用户所有默认地址
     *
     * @param userId 用户ID
     * @return 影响行数
     */
    int cancelDefault(@Param("userId") Long userId);

    /**
     * 删除用户地址
     *
     * @param addressId 地址ID
     * @return 影响行数
     */
    int deleteById(@Param("addressId") Long addressId);

    /**
     * 通过用户ID删除用户地址
     *
     * @param userId 用户ID
     * @return 影响行数
     */
    int deleteByUserId(@Param("userId") Long userId);
} 